//PROGRAMA : IDCPA991 (VERSAO PARA ABN) FOR�A EMISSAO
// BIBLIOTECA : SISP
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : GEJUSPC - GERENCIA DA JUSTICA, SEGURANCA PUBLICA E
// CIDADANIA/INSTITUTO DE IDENTIFICACAO
// PROGRAMADOR : * DATA: 02/03/1999
// OBJETIVO : ATUALIZA CADASTRO OPCAO: 'AIC'
// ATUALIZACOES DATA
// PROGRAMA : IDCPA001 02/03/1999
// BIBLIOTECA : SISP
// PROGRAMADOR :
// OBJETIVO : ATUALIZA CADASTRO OPCAO: 'AIC'
// E FAZ A IMPRESSAO SIMULTANEA DO BOLETIM E DO RG
// : ATUALIZA DATA N6 PARA N8 (BUG ANO 2000) 07/10/1999
// : RESETAR A PRIMEIRA TELA 26/11/1999
// : INCLUSAO DO (P-235), TREM DA CIDADANIA 16/02/2000
// : INCLUSAO DO (P-002), SHOPCID JOAO PAULO 26/04/2000
// : ALTERACAO PARA ACAO GLOBAL 20/05/2000
// : INCLUSAO DO (P-005), SHOPCID IMPERATRIZ 18/08/2000
// : IMPRESS. SIMULTANEA DE QUALQUER USUARIO 21/08/2000
// : ALTERACAO PARA DELETEAR RG. 13/03/2001
// : INCLUSAO DO CAMPO HORA(DINHID-HORATU) NO DID-HISTORICO
// : CRIACAO DA TABELA DE USER-ID 30/10/2001
// ALTERACAO PARA ABN (AMERICAN BANK NOTE) 19/04/2002
// > CRIACAO DO CAMPO RENAID TELA IDCTA002.
// > CRIACAO DO CAMPO GRAU DE INSTRUCAO TELA IDCTA001.
// > ALTERACAO NO ARQUIVO ADABAS DID-CADASTRO.
// > ALTERACAO NO ARQUIVO ADABAS SIC-CONTROLE.
// > ALTERACAO NAS LOCAL: VWDIDCAD,VWDVECON,VWDIDHIS,
// IDCLA001.
// > EM 19/04/2002
// : GRAVA ARQUIVO ADABAS SIC-RG PARA USO ABN
// EM 25/11/2002
// : DISCRIMINA DA ABN
// EM 30/11/2002
// : ULTIMA ALTERACAO EM 04/12/2002
// ALTERCOES FEITAS POR SOLON.
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcpa991F;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcta990;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcta991;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcta992;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idctha01;
import br.com.vti.sisp_sicrim.antigo.model.DidCadastro;
import br.com.vti.sisp_sicrim.antigo.model.DidHistorico;
import br.com.vti.sisp_sicrim.antigo.model.Estla001;
import br.com.vti.sisp_sicrim.antigo.model.Idcla001;
import br.com.vti.sisp_sicrim.antigo.model.SicRg;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sislac01;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpa991 OBJETIVO : ATUALIZA CADASTRO OPCAO: 'AIC' *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

public class Idcpa991 {
	// Views utilizadas
	SicTabelas vwTabele = new SicTabelas();
	SicTabelas vwDvetab = new SicTabelas();
	DidCadastro vwDidcad = new DidCadastro();
	DidHistorico vwDidhis = new DidHistorico();
	SicRg vwsicrg = new SicRg();
	SicTabelas dvetabVw = new SicTabelas();
	// DidCadastro didcad = new DidCadastro();
	DidCadastro viu1 = new DidCadastro();
	// Telas/relatorios utilizados
	Idcpa991F idcpa991F;
	Idcta990 idcta990;
	Idcta991 idcta991;
	Idcta992 idcta992;
	Idctha01 idctha01;
	// Includes utilizados
	Estla001 estla001 = new Estla001();
	Idcla001 idcla001 = new Idcla001();
	Sislac01 sislac01 = new Sislac01();
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Idcpa991 idcpa991Anterior;
	String faseproc = "0";
	private int dv1 = 0;
	private String pais = "";
	private int dtat = 0;
	private int datatu = 0;
	private String chave = "";
	private int i = 0;
	private String[][] dedos = new String[6][3];
	private String[][] dedot = new String[6][3];
	private String isn = "";
	private String isnt = "";
	private String uf = "";
	private int motbxa = 0;
	private String chalf = "";
	private String rgdata = "";
	private int datn = 0;
	private String p200 = "*** INSTITUTO DE IDENTIFICACAO ***";
	private String cab01 = "POSTO - 001 * SLS-MA";
	private int j = 0;
	private int matesp = 0;
	private String senesp = "";
	private String nomeClasse = this.getClass().getSimpleName();
	private String confr = "";
	private int jXpto = 3;
	private int c1 = 0;
	private int c2 = 0;
	private String jUser = UtilBean.getInitUser();
	private String ctl = "";
	private int k = 0;
	private int codpesq = 0;
	private String conf = "";
	private int datemi = 0;
	private String chassi = "";
	private String nommae = "";
	private String nompai = "";
	private String comuna = "";
	private int data8 = 0;
	private String[] numpos = new String[3];
	private String[] numvia = new String[3];
	private String[] pis = new String[3];
	private long[] pispas = new long[3];
	private String[] numcpf = new String[3];
	private String[] docum1 = new String[3];
	private String[] docum2 = new String[3];
	private long[] reggert = new long[3];
	private int[] datnas = new int[3];
	private long[] ndemid = new long[3];
	private long ndemidAbn = 0;
	private String[] comun = new String[3];
	private int[] nvia = new int[3];
	private String[] ufnasc = new String[3];
	private String vvv = "";
	private String ppp = "";
	private String docume = "";
	private String nomide = "";
	private String nomid1 = "";
	private String nomid2 = "";
	private String filia1 = "";
	private long[] numrg = new long[3];
	private long[] nserie = new long[3];
	private String[] nomeid = new String[3];
	private int horatemp = 0;
	private int l = 0;
	private String acha1 = "";
	private long iReggerm = 0;
	private int dataCorrente = 0;
	private String chaveAlfa = "";
	private String tabDescel = "";
	private int tPosto = 0;
	// CABECALHO DO POSTO: POSTO
	private String tAsterisco = "";
	// NUMERO DO POSTO
	private String tDescel = "";
	// CONTEM
	private int qPosto = 0;
	// NOME DO ORGAO OU SETOR
	private long rendv = 0;
	private long soma = 0;
	private int resto = 0;
	private int w = 0;
	private String wrenaid = "";
	private String wdel = "";
	private String iCnumvia = "";
	private String wvideo = "";
	private String wct = "";
	private String wret = "";
	// PROGRAMA: GETCHR
	// FUNCAO: CAPTURA O NOME LOGICO DO TERMINAL
	private String ppg = "";
	private String pparm = "";
	private int rTid = 0;
	private int len = 0;
	private int retcode = 0;
	private String getarea = "";
	private String devi = "";
	private String devic = "";
	private String video = "";
	private int nterm = 0; // SETA PF'S

	private Idcta990 preMapas() {
		idcpa991F = new Idcpa991F(true, sessao);
		idcta990 = new Idcta990(true, sessao);
		idcta991 = new Idcta991(true, sessao);
		idcta992 = new Idcta992(true, sessao);
		idctha01 = new Idctha01(true, sessao);
		dedos = new String[6][3];
		;
		dedot = new String[6][3];
		numpos = new String[3];
		numvia = new String[3];
		pis = new String[3];
		pispas = new long[3];
		numcpf = new String[3];
		docum1 = new String[3];
		docum2 = new String[3];
		reggert = new long[3];
		datnas = new int[3];
		ndemid = new long[3];
		comun = new String[3];
		nvia = new int[3];
		ufnasc = new String[3];
		numrg = new long[3];
		nserie = new long[3];
		nomeid = new String[3];

		idcta991.setDataCorrente(UtilBean.obtemDataCorrente());
		idcta991.setDataCorrente(UtilBean.inverteDataCorrente());
		idcta991.setMensagemSaida("INFORME OS DADOS ACIME P/ATUALIZAR                (SOLON - CEL:9974-8432) ");
		datn = UtilBean.obtemDataCorrente();
		estla001.qde = 1;
		estla001.esttip = 99;
		l = 0;
		// Par�grafo: r0()
		return idcta990;
	}

	public Idcpa991(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcpa991F idcpa991F, Idcta990 idcta990, Idcta991 idcta991, Idcta992 idcta992, Idctha01 idctha01) {
		try {
			main(idcpa991F, idcta990, idcta991, idcta992, idctha01);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idcpa991F pidcpa991F, Idcta990 pidcta990, Idcta991 pidcta991, Idcta992 pidcta992, Idctha01 pidctha01) throws Exception {
		if (pidcpa991F == null && pidcta990 == null && pidcta991 == null && pidcta992 == null && pidctha01 == null) {
			primeiraVez = true;
			// idcta990 = new Idcta990 (primeiraVez);
			idcta990 = preMapas();
			idcta990.setNavegar("../idcpa991/executar");
			result.include("idcta990", idcta990);
			sessao.setAtributo("IDCPA991", this);
			idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidcpa991F, pidcta990, pidcta991, pidcta992, pidctha01);
		}

		sessao.getSisgsisp().setOperacao("ADC");
		if (!UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			idcta990.setIreggerm(idcta991.getIregger());
			if (wvideo.equals("T")) {
				idcta991.setIregger(0);
				iReggerm = 0;
			}
			if (idcta992.getChave().equals("I")) {
				idcta991.setIregger(0);
			}
			chave = "";
			for (int i1 = 1; i1 <= 5; i1++) {
				for (int i2 = 1; i2 <= 2; i1++) {
					dedos[i1][i2] = "";
				}
			}
			for (int i1 = 1; i1 <= 5; i1++) {
				for (int i2 = 1; i2 <= 2; i1++) {
					dedot[i1][i2] = "";
				}
			}
			estla001.cpo = 0;
			// idcG = "";
			pais = "";
			matesp = 0;
			idcta992.setInomide("");
			idcta990.setInommae("");
			idcla001.iDatnas = 0;
		}

		if (idcta992.getChave().equals("I")) {
			for (c1 = 1; c1 <= 2; c1++) {
				for (c2 = 1; c2 <= 5; c2++) {

					idcta990.setDedos(c2, c1, "W");
				}
			}
		}

		idcta990.receberTela(false, result);
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			idcta990.setMensagemSaida("TRANSACAO CANCELADA");
			result.include("idcta990", idcta990);
			sessao.setAtributo("IDCPA991", this);
			idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}
		if (idcta991.getIregger() > 0) {
			vwDidcad.consultaNumeroRg(idcta991.getIregger());
			isn = vwDidcad.getId();// isn = *ISN(3130);
			idcta990.setChave("A");
			estla001.cpo = 2;
			if (!mostrar1(pidcta991, pidcta992, pidctha01)) {
				return;
			}
			if (UtilBean.funcao.equals(UtilBean.ctt_retorna) || UtilBean.funcao.equals(UtilBean.ctt_proxima)) {
				result.include("idcta990", idcta990);
				sessao.setAtributo("IDCPA991", this);
				idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			if (sislac01.op3.equals("N")) {
				// dao.rollback();
				idcta990.setMensagemSaida("REGISTRO ALTERADO OK.");
				mover();

				// ATE AQUI O.K
				vwDidcad.atualiza();
				// dao.rollback();
			}
			historico();

			if (vwDidcad.registrosProcessados() == 0) {
				idcta990.enviarMensagem(null, "");
				result.include("idcta990", idcta990);
				sessao.setAtributo("IDCPA991", this);
				idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}

		} else
		// PROCESSA RG NOVOS(INCLUSAO)
		{
			if (idcla001.nom0[1].trim().equals("")) {
				idcta990.enviarMensagem(null, "INFORME NOME CORRETAMENTE");
				return;
			}
			if (!idcpa991F.getEnviada()) {
				result.include("idcpa991F", idcpa991F);
				sessao.setAtributo("IDCPA991", this);
				idcpa991F.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			if (pidcpa991F != null) {
				idcpa991F.receberTela(false, result);
			}
			// IDCPA991
			if (UtilBean.funcao.equals(UtilBean.ctt_retorna) || idcpa991F.getConfr().equals("N")) {
				result.include("idcta990", idcta990);
				sessao.setAtributo("IDCPA991", this);
				idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			if (!(idcpa991F.getConfr().equals("S") || idcpa991F.getConfr().equals("N"))) {
				idcpa991F.enviarMensagem(null, "INFORME �S� SIM OU �N� NAO");
				result.include("idcpa991F", idcpa991F);
				sessao.setAtributo("IDCPA991", this);
				idcpa991F.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			estla001.cpo = 1;
			idcta990.setMensagemSaida("OPCAO A SER EFETUADA - INCLUSAO");
			idcta990.setChave("I");

			idcta990.receberTela(false, result);
			// TELA 1 DE ATUALIZACAO DO CADASTRO
			if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
				idcta990.setMensagemSaida("INCLUSAO NAO EFETUADA");
				result.include("idcta990", idcta990);
				sessao.setAtributo("IDCPA991", this);
				idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}
			if (!telas(pidcta991, pidcta992, pidctha01))
				return;
			// OBSERVACAO
			// DATA DA ATUALIZACAO DA TABELA 208, ULTIMO NUMERO DO RG COM ANO
			// (N2)
			// ULTIMO NUMERO: 124700299-0
			// DATA.: 23/10/1999
			dvetabVw.pesq = UtilBean.moveSubstring(dvetabVw.pesq, 0, 3, "N", 208);
			dvetabVw.pesq = UtilBean.moveSubstring(dvetabVw.pesq, 3, 12, "N", 1992001);
			dvetabVw.consultaTabele(208, (long) 1992001);
			// Par�grafo: rp()

			chalf = dvetabVw.getChaveAlfaAcesso();
			chalf = UtilBean.moveSubstring(chalf, 0, 8, "N", Long.parseLong(UtilBean.subStr(chalf, 0, 8)) + 1);
			vwTabele.setChaveAlfaAcesso(chalf);
			dvetabVw.atualiza();
			// dao.rollback();
			idcla001.iRegger = Long.parseLong(UtilBean.subStr(chalf, 0, 8)) * 10000 + idcta992.getAdoc();
			// ADICIONA O ANO AO RG

			dv1 = funcoes.idcndig2(idcta990.getIregger());
			idcla001.iRegger = Long.parseLong(UtilBean.moveSubstring(idcla001.iRegger, 12, 1, "N", dv1));
			vwDidcad.pesquisaNumeroRg(idcta991.getIregger());
			if (vwDidcad.registrosProcessados() > 0) {

				acha1 = "X";
			}

			if (acha1.equals("X")) {
				acha1 = "";
				// continue;
			} else {
				result.include("idcta990", idcta990);
				sessao.setAtributo("IDCPA991", this);
				idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
				return;
			}

			// //dao.rollback();
			mover();
			vwDidcad.grava();
			// //dao.rollback();
			idcta990.setMensagemSaida("REGISTRO INCLUIDO OK. ");

			idcta990.receberTela(false, result);
		}
		// TELA 1 DE ATUALIZACAO DO CADASTRO
		// //dao.rollback();
		idcla001.iDatnat = 0;
		idcla001.iDatnas = 0;
		idcla001.iDatexp = 0;
		idcla001.iDatdoc = 0;
		if (!UtilBean.funcao.equals(UtilBean.ctt_retorna))
		// ATUALIZA DCAD-ESTATISTICAS
		{

			funcoes.estna001(estla001.cpo, estla001.esttip, estla001.qde, sessao.getSisgsisp().getVar(), idctha01.getMatric());
			imprimeRg();
		}
		sessao.setAtributo("IDCPA991", this);
		result.include("idcta990", idcta990);
		idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private boolean mostrar1(Idcta991 pidcta991, Idcta992 pidcta992, Idctha01 pidctha01) throws Exception {
		idcta991.setMensagemSaida("OPCAO A SER EFETUADA - ALTERACAO OU BAIXA");
		idcta991.setInumpos(vwDidcad.getNumeroPosto());
		idcta991.setInompai(vwDidcad.getNomePai());
		idcta991.setIregger(vwDidcad.getNumeroRg());
		idcla001.iDatnas = vwDidcad.getDataNasc();
		idcta992.setImicrof(vwDidcad.getCodigoMicrofilme());
		idcta991.setIufrant(vwDidcad.getUfRegAnterior());
		idcta991.setInacion(vwDidcad.getNacionalidadeIdent());
		idcla001.iUfnasc = vwDidcad.getUfMunicipioNasc();
		idcta992.setIpispas(vwDidcad.getNumeroPisPasep());
		idcla001.iDatexp = vwDidcad.getDataExp();
		idcla001.iUfexpe = vwDidcad.getUfMunicipioExp();
		idcta991.setInserie(vwDidcad.getNumeroSerieCart());
		idcta991.setIuftitu(vwDidcad.getUfTituloEleitor());
		idcta991.setIcermil(vwDidcad.getNumeroCertificado());
		idcta991.setIufpcnh(vwDidcad.getUfCnh());
		idcta991.setIfatorh(vwDidcad.getFatorRh());
		idcta991.setIcomuen(vwDidcad.getCodigoMunicipio());
		idcta992.setIcodpro(vwDidcad.getCodigoProfissao());
		idcla001.iDespro = vwDidcad.getDespro();
		idcta992.setIaltura(vwDidcad.getAlturaIdent());
		idcta992.setIcorcab(vwDidcad.getCodigoCorCabelo());
		idcta992.setIcodano(vwDidcad.getCodigoAnomalia());
		idcla001.iDatdoc = vwDidcad.getDataDocumento();
		idcta991.setInsecao(vwDidcad.getNumeroSecao());
		idcta991.setIzonaof(vwDidcad.getZonaOficio());
		idcta991.setInumliv(vwDidcad.getNumeroLivro());
		idcta991.setInumcer(vwDidcad.getNumeroCertidao());
		idcta991.setIcomple(vwDidcad.getComplementoEndereco());
		idcta992.setIsinpar(vwDidcad.getSinaisParticulares());
		idcta991.setInomant(vwDidcad.getNomeAnterior());
		idcta991.setIanopor(vwDidcad.getAnoPortariaMinist());
		idcla001.iDatnat = vwDidcad.getDataNaturalizacao();
		idcta991.setIregger(vwDidcad.getNumeroRg());
		idcla001.iDatexp = vwDidcad.getDataExp();
		idcta991.setIordens(vwDidcad.getNumeroOrdem());
		idcta991.setInumpro(vwDidcad.getNumeroProtocolo());
		idcta992.setInomide(vwDidcad.getNomeIdent());
		idcta990.setInommae(vwDidcad.getNomeMae());
		idcta991.setIregant(vwDidcad.getRegistroAnterior());
		idcta991.setInumcpf(vwDidcad.getNumeroCpf());
		idcta992.setInumvia(vwDidcad.getNumeroVia());
		idcta992.setInumvia(idcta992.getInumvia());
		idcta992.setInumvia(1);
		idcta991.setIestciv(vwDidcad.getEstadoCivil());
		idcta991.setIcomuna(vwDidcad.getNomeMunicipioIdent());
		idcta991.setIcodsex(vwDidcad.getCodigoSexo());
		idcta991.setItipdoc(vwDidcad.getTipoDocumento());
		idcta991.setIcomuex(vwDidcad.getCodigoMunicipioExp());
		idcta991.setIcartra(vwDidcad.getNumeroCartTrab());
		idcta991.setItitele(vwDidcad.getNumeroTituloEleitor());
		idcta991.setInuzona(vwDidcad.getZonaEleitoral());
		idcta991.setIprtcnh(vwDidcad.getNumeroProntuarioCnh());
		idcta991.setItipsan(vwDidcad.getTipoSangue());
		idcta991.setIcodcep(vwDidcad.getCodigoCep());
		idcla001.iUfmure = vwDidcad.getUfMunicipio();
		idcta992.setIcodcut(vwDidcad.getCodigoCutis());
		idcta992.setIcorolh(vwDidcad.getCodigoCorOlhos());
		idcta992.setItipcab(vwDidcad.getCodigoTipoCabelo());
		idcta992.setImatfua(vwDidcad.getMatriculaFuncionario());
		idcta991.setIregiao(vwDidcad.getRegiaoMilitar());
		idcta991.setInumres(vwDidcad.getNumeroResidencia());
		idcta991.setIvcivil(vwDidcad.getVaraCivil());
		idcta991.setInumfol(vwDidcad.getNumeroFolha());
		idcta991.setInomcar(vwDidcad.getNomeCartorio());
		idcta991.setIbairro(vwDidcad.getNomeBairro());
		idcta991.setIendere(vwDidcad.getEnderecoIdent());
		idcta991.setInumpor(vwDidcad.getNumeroPortariaMinist());
		idcta991.setIcodpor(vwDidcad.getPaisOrigem());
		idcta991.setIgrauin(vwDidcad.getGrauin());
		idcta992.setIobserv(vwDidcad.getObservacaoAdocao());
		// I-RENAID := VW-DIDCAD.DINIDE-RENAID
		idcta990.setDedos(1, 1, vwDidcad.getPolegarDireito());
		idcta990.setDedos(2, 1, vwDidcad.getIndicadorDireito());
		idcta990.setDedos(3, 1, vwDidcad.getMedioDireito());
		idcta990.setDedos(4, 1, vwDidcad.getAnularDireito());
		idcta990.setDedos(5, 1, vwDidcad.getMinimoDireito());
		idcta990.setDedos(1, 2, vwDidcad.getPolegarEsquerdo());
		idcta990.setDedos(2, 2, vwDidcad.getIndicadorEsquerdo());
		idcta990.setDedos(3, 2, vwDidcad.getMedioEsquerdo());
		idcta990.setDedos(4, 2, vwDidcad.getAnularEsquerdo());
		idcta990.setDedos(5, 2, vwDidcad.getMinimoEsquerdo());
		dedot = idcta990.getDedos();

		idcta990.setMensagemSaida("TECLE ENTRA PARA CONTINUAR");

		idcta990.receberTela(false, result);
		// TELA 1 DE ATUALIZACAO DO CADASTRO
		// 1A. TELA
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			result.include("idcta990", idcta990);
			sessao.setAtributo("IDCPA991", this);
			idcta990.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return false;
		}

		sislac01.op3 = "N";
		return telas(pidcta991, pidcta992, pidctha01);
	}

	private void mover() {
		if (vwDidcad.getDataAtualizacao() > 0) {
			dtat = vwDidcad.getDataAtualizacao();
		}
		vwDidcad.setDataAtualizacao(UtilBean.obtemDataCorrente());
		vwDidcad.setNomeMae(idcta990.getInommae());
		vwDidcad.setDataExp(idcla001.iDatexp);
		vwDidcad.setDataNasc(idcla001.iDatnas);
		vwDidcad.setNomePai(idcta991.getInompai());
		vwDidcad.setRegistroAnterior(idcta991.getIregant());
		vwDidcad.setNumeroCpf(idcta991.getInumcpf());
		vwDidcad.setNumeroRg(idcta991.getIregger());
		vwDidcad.setNomeIdent(idcta992.getInomide());
		vwDidcad.setDataNaturalizacao(idcla001.iDatnat);
		vwDidcad.setDataDocumento(idcla001.iDatdoc);
		vwDidcad.setNumeroPosto(idcta991.getInumpos());
		vwDidcad.setNumeroProtocolo(idcta991.getInumpro());
		vwDidcad.setCodigoMicrofilme(idcta992.getImicrof());
		if (idcta991.getIordens() == 9) {
			estla001.cpo = 3;
		}
		vwDidcad.setNumeroVia(idcta992.getInumvia());
		vwDidcad.setEstadoCivil(idcta991.getIestciv());
		vwDidcad.setNomeMunicipioIdent(idcta991.getIcomuna());
		vwDidcad.setUfRegAnterior(idcta991.getIufrant());
		vwDidcad.setNacionalidadeIdent(idcta991.getInacion());
		if (idcta991.getIcomuna() > 180 || idcta991.getInacion() == 1) {
			codpesq = idcta991.getIcomuna();
			uf();
			idcla001.iUfnasc = uf;

			vwDidcad.setUfMunicipioNasc(idcla001.iUfnasc);
		}
		vwDidcad.setCodigoSexo(idcta991.getIcodsex());
		vwDidcad.setTipoDocumento(idcta991.getItipdoc());
		vwDidcad.setNumeroPisPasep(idcta992.getIpispas());
		vwDidcad.setCodigoMunicipioExp(idcta991.getIcomuex());
		codpesq = idcta991.getIcomuex();
		uf();
		idcla001.iUfexpe = uf;
		vwDidcad.setUfMunicipioExp(idcla001.iUfexpe);
		vwDidcad.setNumeroSerieCart(idcta991.getInserie());
		vwDidcad.setUfTituloEleitor(idcta991.getIuftitu());
		vwDidcad.setNumeroCertificado(idcta991.getIcermil());
		vwDidcad.setUfCnh(idcta991.getIufpcnh());
		vwDidcad.setFatorRh(idcta991.getIfatorh());
		vwDidcad.setNumeroCartTrab(idcta991.getIcartra());
		vwDidcad.setNumeroTituloEleitor(idcta991.getItitele());
		vwDidcad.setZonaEleitoral(idcta991.getInuzona());
		vwDidcad.setNumeroProntuarioCnh(idcta991.getIprtcnh());
		vwDidcad.setTipoSangue(idcta991.getItipsan());
		vwDidcad.setCodigoCep(idcta991.getIcodcep());
		codpesq = idcta991.getIcomuen();
		uf();
		idcla001.iUfmure = uf;
		vwDidcad.setCodigoMunicipio(idcta991.getIcomuen());
		vwDidcad.setCodigoProfissao(idcta992.getIcodpro());
		vwDidcad.setDespro(idcla001.iDespro);
		vwDidcad.setAlturaIdent(idcta992.getIaltura());
		vwDidcad.setCodigoCorCabelo(idcta992.getIcorcab());
		vwDidcad.setCodigoAnomalia(idcta992.getIcodano());
		vwDidcad.setRegiaoMilitar(idcta991.getIregiao());
		vwDidcad.setNumeroResidencia(idcta991.getInumres());
		vwDidcad.setVaraCivil(idcta991.getIvcivil());
		vwDidcad.setNumeroFolha(idcta991.getInumfol());
		vwDidcad.setNomeCartorio(idcta991.getInomcar());
		vwDidcad.setNomeBairro(idcta991.getIbairro());
		vwDidcad.setEnderecoIdent(idcta991.getIendere());
		vwDidcad.setNumeroPortariaMinist(idcta991.getInumpor());
		vwDidcad.setPaisOrigem(idcta991.getIcodpor());
		vwDidcad.setNumeroOrdem(idcta991.getIordens());
		vwDidcad.setUfMunicipio(idcla001.iUfmure);
		vwDidcad.setCodigoCutis(idcta992.getIcodcut());
		vwDidcad.setCodigoCorOlhos(idcta992.getIcorolh());
		vwDidcad.setCodigoTipoCabelo(idcta992.getItipcab());
		vwDidcad.setMatriculaFuncionario(idcta992.getImatfua());
		vwDidcad.setNumeroSecao(idcta991.getInsecao());
		vwDidcad.setZonaOficio(idcta991.getIzonaof());
		vwDidcad.setNumeroLivro(idcta991.getInumliv());
		vwDidcad.setNumeroCertidao(idcta991.getInumcer());
		vwDidcad.setComplementoEndereco(idcta991.getIcomple());
		vwDidcad.setSinaisParticulares(idcta992.getIsinpar());
		vwDidcad.setNomeAnterior(idcta991.getInomant());
		vwDidcad.setAnoPortariaMinist(idcta991.getIanopor());
		vwDidcad.setGrauin(idcta991.getIgrauin());
		vwDidcad.setRenaid(idcta992.getIrenaid());
		vwDidcad.setObservacaoAdocao(idcta992.getIobserv());
		vwDidcad.setMatriculaFunc(sessao.getSisgsisp().getMatric());
		vwDidcad.setPolegarDireito(idcta990.getDedos(1, 1));
		vwDidcad.setIndicadorDireito(idcta990.getDedos(2, 1));
		vwDidcad.setMedioDireito(idcta990.getDedos(3, 1));
		vwDidcad.setAnularDireito(idcta990.getDedos(4, 1));
		vwDidcad.setMinimoDireito(idcta990.getDedos(5, 1));
		vwDidcad.setPolegarEsquerdo(idcta990.getDedos(1, 2));
		vwDidcad.setIndicadorEsquerdo(idcta990.getDedos(2, 2));
		vwDidcad.setMedioEsquerdo(idcta990.getDedos(3, 2));
		vwDidcad.setAnularEsquerdo(idcta990.getDedos(4, 2));
		vwDidcad.setMinimoEsquerdo(idcta990.getDedos(5, 2));
		vwDidcad.setMatEsp(idcta990.getMatesp());
	}

	private void historico() {
		datatu = UtilBean.obtemDataCorrente();
		vwDidhis.setNumeroPosto(idcta991.getInumpos());
		vwDidhis.setNumeroRg(vwDidcad.getNumeroRg());
		vwDidhis.setNomeIdent(vwDidcad.getNomeIdent());
		vwDidhis.setNomePai(vwDidcad.getNomePai());
		vwDidhis.setNomeMae(vwDidcad.getNomeMae());
		vwDidhis.setEstadoCivil(vwDidcad.getEstadoCivil());
		vwDidhis.setNacionalidade(vwDidcad.getNacionalidadeIdent());
		vwDidhis.setNumeroCpf(vwDidcad.getNumeroCpf());
		vwDidhis.setMatriculaFunc(vwDidcad.getMatriculaFuncionario());
		vwDidhis.setCodigoAnomalia(vwDidcad.getCodigoAnomalia());
		vwDidhis.setNumeroProtocolo(vwDidcad.getNumeroProtocolo());
		vwDidhis.setPolegarDireito(vwDidcad.getPolegarDireito());
		vwDidhis.setIndicadorDireito(vwDidcad.getIndicadorDireito());
		vwDidhis.setMedioDireito(vwDidcad.getMedioDireito());
		vwDidhis.setAnularDireito(vwDidcad.getAnularDireito());
		vwDidhis.setMinimoDireito(vwDidcad.getMinimoDireito());
		vwDidhis.setPolegarEsquerdo(vwDidcad.getPolegarEsquerdo());
		vwDidhis.setIndicadorEsquerdo(vwDidcad.getIndicadorEsquerdo());
		vwDidhis.setMedioEsquerdo(vwDidcad.getMedioEsquerdo());
		vwDidhis.setAnularEsquerdo(vwDidcad.getAnularEsquerdo());
		vwDidhis.setMinimoEsquerdo(vwDidcad.getMinimoEsquerdo());
		vwDidhis.setDataNasc(vwDidcad.getDataNasc());
		vwDidhis.setGrauInstrucao(vwDidcad.getGrauin());
		vwDidhis.setRenaid(vwDidcad.getRenaid());
		vwDidhis.setDataInclusao(UtilBean.obtemDataCorrente());
		vwDidhis.setMatriculaInclusao(sessao.getSisgsisp().getMatric());
		vwDidhis.setMatesp(idcta990.getMatesp());
		vwDidhis.setDataAtualizacao(dtat);
		vwDidhis.setHoraAtu(Integer.parseInt((new SimpleDateFormat("HHmmssS").format(Calendar.getInstance().getTime()))));
		if (sislac01.op3.equals("S")) {

			vwDidhis.setDataBaixa(UtilBean.obtemDataCorrente());
			vwDidhis.setCodigoMotivoBaixa(motbxa);
		}
		vwDidhis.grava();
		// dao.rollback();
	}

	private boolean telas(Idcta991 pidcta991, Idcta992 pidcta992, Idctha01 pidctha01) throws Exception {

		idcta991.setMensagemSaida("TECLE PF1 PARA CONTINUAR");
		// Par�grafo: ry1()
		if (!idcta991.getEnviada()) {
			result.include("idcta991", idcta991);
			sessao.setAtributo("IDCPA991", this);
			idcta991.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
			return false;
		}
		if (pidcta991 != null) {
			idcta991.receberTela(false, result);
		}
		if (!UtilBean.validarMascara(idcta991.getIgrauin(), "01-12")) {
			idcta991.enviarMensagem(null, "GRAU DE INSTRUCAO, INVALIDO (01-12)");
			result.include("idcta991", idcta991);
			sessao.setAtributo("IDCPA991", this);
			idcta991.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return false;
		}
		if (idcta991.getIcodsex() == 2 && idcta991.getIestciv() == 2) {
			while (viu1.pesquisaNomeIdentNomeMaeDataNasc(idcta991.getInomant(), idcta990.getInommae(), idcla001.iDatnas)) {
				if (viu1.getNumeroRg() != idcta991.getIregger()) {
					idcta991.enviarMensagem("iNomant", "REGISTRO CADASTRADO COM RG:1:" + viu1.getNumeroRg());
					return false;
				}

			}
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_ajuda)) {
			// Par�grafo: ry2()

			wvideo = "T";
			ndemidAbn = 0;

			if (!idcta992.getEnviada()) {
				sessao.setAtributo("IDCPA991", this);
				result.include("idcta992", idcta992);
				idcta992.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
				return false;
			}
			if (pidcta992 != null) {
				idcta992.receberTela(false, result);
			}
			if (!UtilBean.validarMascara(idcta992.getIrenaid(), "XXX9........") && !UtilBean.validarMascara(idcta992.getIrenaid(), "MAI9........")) {
				idcta992.enviarMensagem("iRenaid", "NUMERO DO RENAID INVALIDO (CONTROLE DA ABN)");
				return false;
			}
			vwDidcad.consultaRenaid(idcta992.getIrenaid());
			senesp = "";

			if (idcta992.getInumvia() > 1) {
				senesp = "";
			}
			wrenaid = idcta992.getIrenaid();
			// CALCULA DIGITO VERIFICADOR MODULO 11
			rendv = Long.parseLong(UtilBean.subStr(wrenaid, 3, 9));
			soma = 0;
			dv1 = 0;
			j = 1;
			for (i = 8; i >= 1; i += -1) {
				j += 1;
				if (j > 9) {
					j = 2;
				}

				soma = UtilBean.extraiDigitos(rendv, 8, i, 1) * j + soma;
			}
			// DIVIDE soma = soma / 11 -- <<NULL>> resto
			resto = (int) (soma % 11);
			if (resto == 1 || resto == 0) {
				dv1 = 0;
			} else {

				dv1 = 11 - resto;
			}
			if (dv1 != idcla001.iRendig) {
				idcta992.enviarMensagem("iRennum", "");
				return false;
			}
			if (UtilBean.funcao.equals(UtilBean.ctt_pf2)) {
				return true;
			}
			if (vwDidcad.getDataDocumento() > 0 && vwDidcad.getNumeroVia() > 0 && !idcta992.getChave().equals("I")) {
				if (vwDidcad.getDataDocumento() > idcla001.iDatdoc) {
					idcta992.enviarMensagem("iDatdoc", "DATA INFERIOR A JA CADASTRADA");
					return false;
				}
			}
			if (!UtilBean.funcao.equals(UtilBean.ctt_confirma)) {
				idcta992.enviarMensagem(null, "TECLE PF5 PARA ATUALIZAR");
				return false;
			}

			if (!idctha01.getEnviada()) {
				sessao.setAtributo("IDCPA991", this);
				result.include("idctha01", idctha01);
				idctha01.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
				return false;
			}
			if (pidctha01 != null) {
				idctha01.receberTela(false, result);
			}
			if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
				if (idcta992.getChave().equals("A")) {
					idcta992.setMensagemSaida("ALTERACAO NAO FOI EXECUTADA");
				} else {
					idcta992.setMensagemSaida("INCLUSAO NAO FOI EXECUTADA");
				}
				return true;
			}
			if (UtilBean.funcao.equals(UtilBean.ctt_anterior)) {
				return false;
			}
			return false;
		}
		if (UtilBean.funcao.equals(UtilBean.ctt_retorna)) {
			return false;
		}
		return true;
	}

	private void imprimeRg() {
		if (reggert[1] != 0 || reggert[2] != 0 || idcta991.getIregger() != 0) {
			Idcsup91 idcsup91 = new Idcsup91(result, sessao);
			idcsup91.executar(idcta990.getIregger(), idcta992.getNdemidabn(), idcta992.getInumvia(), idctha01.getMatric(), sessao.getSisgsisp().getVar(), idcta992.getIrenaid());
		}
	}

	private void uf() {
		uf = "";
		dvetabVw.pesq = UtilBean.moveSubstring(dvetabVw.pesq, 0, 3, "N", 001);
		dvetabVw.consultaTabele(1, (long) codpesq);

		uf = dvetabVw.getChaveAlfaAcesso();

	}

	private void restaurarEstados(Idcpa991F pidcpa991F, Idcta990 pidcta990, Idcta991 pidcta991, Idcta992 pidcta992, Idctha01 pidctha01) {
		this.idcpa991Anterior = (Idcpa991) sessao.getAtributo("IDCPA991");
		if (pidcpa991F != null) {
			idcpa991F = pidcpa991F;
		} else {
			idcpa991F = this.idcpa991Anterior.idcpa991F;
		}
		idcpa991F.setSessao(sessao);
		if (pidcta990 != null) {
			idcta990 = pidcta990;
		} else {
			idcta990 = this.idcpa991Anterior.idcta990;
		}
		idcta990.setSessao(sessao);
		if (pidcta991 != null) {
			idcta991 = pidcta991;
		} else {
			idcta991 = this.idcpa991Anterior.idcta991;
		}
		idcta991.setSessao(sessao);
		if (pidcta992 != null) {
			idcta992 = pidcta992;
		} else {
			idcta992 = this.idcpa991Anterior.idcta992;
		}
		idcta992.setSessao(sessao);
		if (pidctha01 != null) {
			idctha01 = pidctha01;
		} else {
			idctha01 = this.idcpa991Anterior.idctha01;
		}
		idctha01.setSessao(sessao);
		this.faseproc = this.idcpa991Anterior.faseproc;
	}
}
